/*
 * JDialog para o usuario poder pesquisar uma empresa
 */
package br.inf.acesso.view.tabelapesquisa;

import br.inf.acesso.bancodedados.firebird.BDEmpresaTrib;
import br.inf.acesso.regrasdenegocios.geral.Empresa;
import br.inf.acesso.validadores.Tabela;
import java.sql.SQLException;
import java.util.ArrayList;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;

/**
 * @author Douglas Giordano
 */
public class PesqEmpresa extends javax.swing.JDialog {

    JTextField codigoEmpresa;
    JLabel nomeEmpresa;
    DefaultTableModel pesqTabelaEmpresa;

    public PesqEmpresa(java.awt.Frame parent, boolean modal, JTextField codigo, JLabel nome) {
        super(parent, modal);

        this.codigoEmpresa = codigo;
        this.nomeEmpresa = nome;
        initComponents();
        this.
        pesquisaEmpresas();
        this.setLocationRelativeTo(null);
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jScrollPane1 = new javax.swing.JScrollPane();
        tabelaEmpresas = new javax.swing.JTable();
        txtNomeEmpresa = new javax.swing.JLabel();
        campoNomeEmpresa = new javax.swing.JTextField();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);

        tabelaEmpresas.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "Codigo", "Empresa"
            }
        ) {
            Class[] types = new Class [] {
                java.lang.String.class, java.lang.String.class
            };
            boolean[] canEdit = new boolean [] {
                false, false
            };

            public Class getColumnClass(int columnIndex) {
                return types [columnIndex];
            }

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        tabelaEmpresas.getTableHeader().setReorderingAllowed(false);
        tabelaEmpresas.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                tabelaEmpresasMouseClicked(evt);
            }
        });
        jScrollPane1.setViewportView(tabelaEmpresas);
        tabelaEmpresas.getColumnModel().getColumn(0).setResizable(false);
        tabelaEmpresas.getColumnModel().getColumn(0).setPreferredWidth(20);
        tabelaEmpresas.getColumnModel().getColumn(1).setResizable(false);
        pesqTabelaEmpresa = (DefaultTableModel) tabelaEmpresas.getModel();

        txtNomeEmpresa.setText("Nome");

        campoNomeEmpresa.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                campoNomeEmpresaKeyReleased(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 500, Short.MAX_VALUE)
            .addGroup(layout.createSequentialGroup()
                .addComponent(txtNomeEmpresa)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(campoNomeEmpresa))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addGap(0, 5, Short.MAX_VALUE)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(txtNomeEmpresa)
                    .addComponent(campoNomeEmpresa, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 474, javax.swing.GroupLayout.PREFERRED_SIZE))
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void tabelaEmpresasMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_tabelaEmpresasMouseClicked
        if (evt.getClickCount() > 1) {
            int codigoLinha = tabelaEmpresas.getSelectedRow();
            codigoEmpresa.setText(tabelaEmpresas.getValueAt(codigoLinha, 0) + "");
            nomeEmpresa.setText(tabelaEmpresas.getValueAt(codigoLinha, 1) + "");
            dispose();
        }
    }//GEN-LAST:event_tabelaEmpresasMouseClicked

    private void campoNomeEmpresaKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_campoNomeEmpresaKeyReleased
        Tabela.limparTabela(pesqTabelaEmpresa);
        pesquisaEmpresasFiltroNome();
    }//GEN-LAST:event_campoNomeEmpresaKeyReleased

    public void pesquisaEmpresas() {
        BDEmpresaTrib bdEmpresas = new BDEmpresaTrib();
        try {
            ArrayList<Empresa> listaEmpresas = bdEmpresas.empresas();
            Empresa.listaEmpresas(listaEmpresas, pesqTabelaEmpresa);
            bdEmpresas.desconectar();
        } catch (SQLException erro) {
            JOptionPane.showMessageDialog(null, erro);
        }
    }

    public void pesquisaEmpresasFiltroNome() {
        BDEmpresaTrib bdEmpresas = new BDEmpresaTrib();
        try {
            ArrayList<Empresa> listaEmpresas = bdEmpresas.empresas(campoNomeEmpresa.getText());
            Empresa.listaEmpresas(listaEmpresas, pesqTabelaEmpresa);
            bdEmpresas.desconectar();
        } catch (SQLException erro) {
            JOptionPane.showMessageDialog(null, erro);
        }
    }
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JTextField campoNomeEmpresa;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTable tabelaEmpresas;
    private javax.swing.JLabel txtNomeEmpresa;
    // End of variables declaration//GEN-END:variables
}
